home *** CD-ROM | disk | FTP | other *** search
- function importMaps(extType){
-
- const nsIFilePicker = Components.interfaces.nsIFilePicker;
-
- var fp = Components.classes["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
- fp.init(window, "Dialog Title", nsIFilePicker.modeOpen);
- fp.appendFilter(extType+" Files","*."+extType);
-
- var rv = fp.show();
- if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {
- var file = fp.file;
- // Get the path as string. Note that you usually won't
- // need to work with the string paths.
- var path = fp.file.path;
- // work with returned nsILocalFile...
- }
-
- //|file| is nsIFile
-
- var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
- .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
- converter.charset = /* The character encoding you want, using UTF-8 here */ "UTF-8";
-
- var data = "";
- var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Components.interfaces.nsIFileInputStream);
- var sstream = Components.classes["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Components.interfaces.nsIScriptableInputStream);
- fstream.init(file, -1, 0, 0);
- sstream.init(fstream);
-
- var str = sstream.read(4096);
- while (str.length > 0) {
- data += str;
- str = sstream.read(4096);
- }
-
- var text = converter.ConvertToUnicode(data);
-
- sstream.close();
- fstream.close();
-
- if(extType == 'kml')
- importMapsKML(text);
- if(extType == 'csv')
- importMapsCsv(text);
- if(extType == 'gpx')
- importMapsGpx(ext);
- if(extType == 'minimap')
- importMapsMinimap(text);
- }
-
-
- function importMapsMinimap(data){
- var domParser = new DOMParser();
- var datadom = domParser.parseFromString(data, "text/xml");
- var metas = datadom.getElementsByTagName('Placemark');
- if (metas) {
- for (i=0; i < metas.length; i++) {
- var minimap = {};
- minimap.title = metas[i].getElementsByTagName('title')[0].textContent;
- minimap.description = metas[i].getElementsByTagName('description')[0].textContent;
- minimap.address = metas[i].getElementsByTagName('address')[0].textContent;
- minimap.sourceurl = metas[i].getElementsByTagName('url')[0].textContent;
- minimap.accuracy = metas[i].getElementsByTagName('accuracy')[0].textContent;
- minimap.altd = metas[i].getElementsByTagName('altd')[0].textContent;
- minimap.lat = metas[i].getElementsByTagName('lat')[0].textContent;
- minimap.lng = metas[i].getElementsByTagName('lng')[0].textContent;
- minimap.country = metas[i].getElementsByTagName('country')[0].textContent;
- minimap.state = metas[i].getElementsByTagName('state')[0].textContent;
- minimap.county = metas[i].getElementsByTagName('county')[0].textContent;
- minimap.locality = metas[i].getElementsByTagName('locality')[0].textContent;
- minimap.street = metas[i].getElementsByTagName('street')[0].textContent;
- minimap.postal = metas[i].getElementsByTagName('postal')[0].textContent;
- add_objectIm(minimap);
- rebuildMap( )
- }
- }
- }
-
- function importMapsKML(data){
- var domParser = new DOMParser();
- var datadom = domParser.parseFromString(data, "text/xml");
- try{
- var metas = datadom.getElementsByTagName('Url');
- var url = metas[0].getElementsByTagName('href')[0].textContent;
- url = url.replace(/&/gi,'&')
- req = new XMLHttpRequest ();
- req.onreadystatechange = getKmlResponse;
- req.open("GET",url,true);
- req.send(null);
- }
- catch(e){
- var metas = datadom.getElementsByTagName('Placemark');
- if (metas) {
- for (i=0; i < metas.length; i++) {
- var kml = {};
- try{kml.title = metas[i].getElementsByTagName('name')[0].textContent;}catch(e){kml.title = '';}
- try{kml.description = metas[i].getElementsByTagName('description')[0].textContent;}catch(e){kml.description = '';}
- try{kml.address = metas[i].getElementsByTagName('address')[0].textContent;}catch(e){kml.address = '';}
- var coord = metas[i].getElementsByTagName('coordinates')[0].textContent;
- kml.lat = coord.split(',')[1];
- kml.lng = coord.split(',')[0];
- kml.sourceurl = '';
- kml.accuracy = '8';
- add_objectIm(kml);
- rebuildMap( )
- }
- }
- }
- }
-
- function getKmlResponse(){
- if (req.readyState == 4) {
- if (req.status == 200)
- {
- var result = req.responseXML;
- var metas = result.getElementsByTagName('Placemark');
- if (metas) {
- for (i=0; i < metas.length; i++) {
- var kml = {};
- try{kml.title = metas[i].getElementsByTagName('name')[0].textContent;}catch(e){kml.title='';}
- try{kml.description = metas[i].getElementsByTagName('description')[0].textContent;}catch(e){kml.description = '';}
- var coord = metas[i].getElementsByTagName('coordinates')[0].textContent;
- kml.lat = coord.split(',')[1];
- kml.lng = coord.split(',')[0];
- try{kml.address = metas[i].getElementsByTagName('address')[0].textContent;}catch(e){kml.address = kml.lat+','+kml.lng;}
- kml.sourceurl = '';
- kml.accuracy = '8';
- add_objectIm(kml);
- rebuildMap( )
- }
- }
- }
- }
- }
-
- function importMapsGpx(data){
- var domParser = new DOMParser();
- var datadom = domParser.parseFromString(data, "text/xml");
-
- var metas = datadom.getElementsByTagName('wpt');
- if (metas) {
- for (i=0; i < metas.length; i++) {
- var gpx = {};
- gpx.title = metas[i].getElementsByTagName('name')[0].textContent;
- gpx.altd = metas[i].getElementsByTagName('ele')[0].textContent;
- gpx.lat = metas[i].getAttribute('lat');
- gpx.lng = metas[i].getAttribute('lon');
- gpx.description = '';
- gpx.address = gpx.lat+','+gpx.lng;
- gpx.sourceurl = '';
- gpx.accuracy = '8';
- add_object(gpx);
- rebuildMap( )
-
- }
- }
- }
-
- function add_objectIm(data){
- try{
- var ds = flock_mapsGetDS();
- var container = ds.getNode("urn:flock:maps:addresses");
- var date=new Date();
- var id='obj_' + date.getTime();
- var root = ds.getNode("urn:flock:maps:addresses");
- var node = ds.getNode("urn:flock:maps:addresses:" + id)
- node.addTargetOnce(_mns('id'), "urn:flock:maps:addresses:" + id );
- node.addTargetOnce(_mns('sourceurl'), data.sourceurl + "" );
- node.addTargetOnce(_mns('location'), data.address + "");
- node.addTargetOnce(_mns('indexlabel'), data.indexlabel +"");
- node.addTargetOnce(_mns('lat'), data.lat + "" );
- node.addTargetOnce(_mns('lng'), data.lng + "" );
- node.addTargetOnce(_mns('title'), data.title + "" );
- node.addTargetOnce(_mns('description'), (data.description || "") );
- node.addTargetOnce(_mns('accuracy'), data.accuracy + "" );
- node.addTargetOnce(_mns('country'), (data.country || "") );
- node.addTargetOnce(_mns('state'), (data.state || "") );
- node.addTargetOnce(_mns('county'), (data.county || "") );
- node.addTargetOnce(_mns('locality'), (data.locality || "") );
- node.addTargetOnce(_mns('postal'), (data.postal || "") );
- node.addTargetOnce(_mns('street'), (data.street || "") );
- node.addTargetOnce(_mns('altd'), (data.altd || "") );
- root.addChild(node);
- ds.save();
- }
- catch(e){
- }
- }